#ifndef __MV_HEARTBEAT_INTERFACE_H
#define __MV_HEARTBEAT_INTERFACE_H

#include "heartbeat_ipc_name.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
* @brief 初始化接口，调用一次，请勿多线程同时调用该接口，否则造成异常
* 
* @author zzk
* @date 2023-04-19 10:49:45
* @version 
* @param process_name 进程名，通过main函数的argv[0]可以获取
* 
* @return 0 正常 -1 已初始化 -2 进程名为NULL -3 进程名字符串申请空间失败 -4 进程id获取异常
          -5 内部异常1 -6 内部异常2 -7 内部异常3
*/
int heartbeat_interface_init(const char* process_name);

/**
* @brief 反初始化，程序退出时调用，请勿多线程同时调用该接口，否则造成异常
* 
* @author zzk
* @date 2023-04-19 11:09:34
* @version 
* 
* @return 0
*/
int heartbeat_interface_deinit();

/**
* @brief 设置服务端程序检查心跳的时间间隔，
* 
* @author zzk
* @date 2023-04-19 11:12:45
* @version 
* @param seconds 单位秒
* 
* @return 0 正常 -1 未成功调用初始化 -2 入参值有误 -3 需要先调用heartbeat_interface_stop_detect
*/
int heartbeat_interface_set_interval(int seconds);

/**
* @brief 开启心跳检测机制
* 
* @author zzk
* @date 2023-04-19 11:14:09
* @version 
* 
* @return 0 正常 -1 未成功调用初始化
*/
int heartbeat_interface_start_detect();

/**
* @brief 关闭心跳检测机制
* 
* @author zzk
* @date 2023-04-19 11:23:14
* @version 
* 
* @return 0 正常 -1 未成功调用初始化
*/
int heartbeat_interface_stop_detect();

/**
* @brief 发送心跳包
* 
* @author zzk
* @date 2023-04-19 11:23:57
* @version 
* 
* @return 0 正常 -1 未成功调用初始化
*/
int heartbeat_interface_send();

#ifdef __cplusplus
}
#endif

#endif